End users have more media and communications choices than ever before. A number of prominent technological trends are currently afoot (e.g., more computing devices, more online video services, more Internet video traffic), and these trends are changing the media delivery landscape. Separately, these trends are pushing the limits of capacity and, further, degrading the performance of video, where such degradation creates frustration amongst end users, content providers, and service providers. In many instances, the video data sought for delivery is dropped, fragmented, delayed, or simply unavailable to certain end users.
Many techniques can be used in streaming multimedia over computer networks. While in the past, most video streaming technologies utilized either file download, progressive file download, or custom streaming protocols, most of today's streaming technologies are based on hypertext transfer protocol (HTTP). These technologies are designed to work efficiently over large distributed HTTP networks such as the Internet.
Most streaming technologies operate by detecting a user's bandwidth and central processing unit (CPU) capacity and by adjusting the quality of a video stream accordingly. Typically, the streaming technology can leverage the use of an encoder that can encode a single source video at multiple bitrates. The player client can switch among the different encodings depending on available resources. Ideally, the result of these activities is little buffering, fast start times, and good experiences for both high-bandwidth and low-bandwidth connections. However, certain fixed chunk sizes result in significant inefficiencies. In general terms, download overhead should be minimized, while not sacrificing video quality.